/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Online;

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
 

/**
 * @author Alvaro Garcia Tapia
 * @author Pablo Mosquera Diaz
 * @author Victor Navarro Ortego
 * @author Adrian Neila Serrano
 * @author Daniel Sanchez Suarez
 * 
 * @proyecto Gestor de Tareas Online
 * @version 1.61
 */
public class EnviarMail {
    
    final String miCorreo = "isiifi12@gmail.com";
    final String miContraseña = "aporlamatricula";
    final String servidorSMTP = "smtp.gmail.com";
    final String puertoEnvio = "465";
    String mailReceptor = null;
    String asunto = null;
    String cuerpo = null;

    public EnviarMail(String usuario, String tarea, String user, String estado,Boolean istarea) {
        
        Inicio inicio = new Inicio();
      
        this.mailReceptor = inicio.getMail(usuario);
        // Se prepara el cuerpo y el asunto del mail según su utilidad
        if (istarea){
            this.asunto = "Gestor de tareas online: Respuesta al envio de las tareas: "+tarea;
            this.cuerpo = "El usuario "+user+" ha "+estado+" las tareas: "+tarea+".";
        }
        else{
            this.asunto = "Gestor de tareas online: Reenvio de contraseña";
            this.cuerpo = "Usuario:\n"+usuario+"\nPass:\n"+tarea;
        }

        //Se preparan los campos del mail
        Properties props = new Properties();
        props.put("mail.smtp.user", miCorreo);
        props.put("mail.smtp.host", servidorSMTP);
        props.put("mail.smtp.port", puertoEnvio);
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.socketFactory.port", puertoEnvio);
        props.put("mail.smtp.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");

        SecurityManager security = System.getSecurityManager();

        try {
            //Se autentifica con el sistema de correo
            Authenticator auth = new autentificadorSMTP();
            Session session = Session.getInstance(props, auth);
            // session.setDebug(true);

            //Se prepara el mail
            MimeMessage msg = new MimeMessage(session);
            msg.setText(cuerpo);
            msg.setSubject(asunto);
            msg.setFrom(new InternetAddress(miCorreo));
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(
                    mailReceptor));
            //Se envia el mail
            Transport.send(msg);
        } catch (Exception mex) {
            mex.printStackTrace();
        }

    }

    //Clase privada de autentificación para servidores smtp
    private class autentificadorSMTP extends javax.mail.Authenticator {
        public PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(miCorreo, miContraseña);
        }
    }


    
}
